Skip to content

fix: 자료를 올리지 않은 사용자의 isGit·isPortfolio가 500 대신 false를 돌려줌 - #93

Merged
kimwuju merged 3 commits into
mainfrom
fix/metadata-null-check
Oct 14, 2026
Merged

kimwuju merged 3 commits into
mainfrom
fix/metadata-null-check

Conversation

@kimwuju

@kimwuju kimwuju commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

연관 이슈 없음 (ngrok 터널 서버 간 연결 테스트 중 발견)

Task

  • isGit·isPortfolio가 500 대신 false를 돌려줌: 자료를 한 번도 올리지 않은 사용자에게 인증 서버는 gitUrls·fileUrl을 null로 줍니다. 두 API가 그 값에 바로 isEmpty()를 불러 NPE로 500이 났습니다. 응답 자체가 null인 경우도 false로 답합니다. fileUrl은 빈 문자열도 없는 것으로 보는데, AnalysisLaunchService.launchIfMissing과 같은 기준입니다.

ETC

  • 처음에는 인증 서버 읽기 제한을 10초로 늘리는 커밋도 있었습니다. 리뷰 지적대로 사용자 확인(getUser)과 메타데이터 조회(getMetaData) GET 요청까지 10초 × 재시도 3회로 묶이는 문제가 있어 revert 커밋으로 5초로 되돌렸습니다. 지금 main과의 차이는 null 처리와 그 테스트뿐입니다.
  • 테스트: MetaDataControllerTest(새로 추가, 3개), HttpInterfaceConfigTest, ExternalApiLoggingWiringTest 통과.
  • 같은 테스트 중 확인한 이 PR 밖의 문제:
    • 분석 서버에서 /analysis/audio가 404입니다(AUDIO_ENABLED가 꺼져 있음). 켤 때 AUDIO_CALLBACK_HOSTS에 API 서버 콜백 호스트를 넣어야 합니다.
    • 분석 서버와 채팅 서버 모두 콜백에 X-Internal-Token을 보내지 않습니다. 지금 INTERNAL_AUTH_TOKEN을 설정하면 모든 콜백이 401로 막힙니다.

🤖 Generated with Claude Code

kimwuju and others added 2 commits October 14, 2026 17:33
자료를 한 번도 올리지 않은 사용자에게 인증 서버는 gitUrls·fileUrl을 null로 준다. 두 API가 그 값에
바로 isEmpty()를 불러 NPE로 500이 났다. 응답 자체가 null인 경우까지 false로 답한다.
fileUrl은 빈 문자열도 없는 것으로 본다 -- launchIfMissing과 같은 기준이다.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
자료 업로드 중 인증 서버 createMetaData가 5초를 넘겨 502로 나갔다. 인증 서버에는 저장이 끝나 있었고,
올린 S3 파일은 고아로 남고 분석은 시작되지 않았다. 직접 부르면 0.18초라 일시적인 지연이다.
분석 서버처럼 auth-server.read-timeout을 따로 두고 10초로 잡는다. 채팅 서버는 5초 그대로다.

getUser도 같은 클라이언트라 인증 서버가 멈추면 요청 하나가 최대 약 30초(재시도 3회) 붙잡힌다.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@danjee2009 danjee2009 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[P2] src/main/java/repit/repit_api_server/global/config/HttpInterfaceConfig.java:50 — 인증 서버 클라이언트 전체의 읽기 제한을 10초로 늘려 createMetaData뿐 아니라 getUser와 getMetaData도 영향을 받습니다. 이 두 GET은 ExternalApiExecutor에서 최대 3회 재시도하므로 인증 서버가 느릴 때 요청 스레드가 최대 약 30.6초(10초 × 3회 + 대기) 묶일 수 있습니다. 기존 상한 약 15.6초보다 두 배 늘어 다른 인증 의존 API까지 스레드 고갈과 지연 전파 위험이 커집니다. createMetaData 전용 클라이언트/시간 제한을 두거나, GET 호출에 적용할 상한과 재시도 정책을 분리해 주세요.

CI의 전체 테스트는 통과했습니다.

10초는 createMetaData뿐 아니라 사용자 확인(getUser)과 메타데이터 조회(getMetaData)에도 걸린다. 두 GET은
3회 재시도라 인증 서버가 느리면 요청 스레드가 최대 약 30.6초 묶여, 기존 약 15.6초의 두 배로 다른
인증 의존 API까지 지연이 번진다. 이 PR에서는 빼고 null 처리만 남긴다.

This reverts commit 028592e.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kimwuju kimwuju changed the title fix: isGit·isPortfolio null 처리와 인증 서버 읽기 제한 10초 fix: 자료를 올리지 않은 사용자의 isGit·isPortfolio가 500 대신 false를 돌려줌 Oct 14, 2026
@kimwuju
kimwuju merged commit 341ec00 into main Oct 14, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants